Не нужно сразу писать оптимизированный код, это замедляет разработку и уменьшает читаемость, но при этом выигрыш в эффективности может быть просто минимален
Более разумно сначала написать код, а потом измерять эффективность и видеть те узлы, которые расходуют память малоэффективно
Позволяет анализировать память процесса с точки зрения операционной системы
Это автономная программа, не требующая установки, ее можно скачать с сайта https://docs.microsoft.com/en-us/sysinternals/downloads/vmmap
VMMap распознает страницы, применяемые управляемой кучей .NET, а также страницы, предназначенные для стека и загруженных библиотек.
В Винде существует низкоуровневое API которое может собирать и выдавать информацию о на уровне ОС. Существует множество разных счетчиков и у них есть адреса вида:
\CategoryX(Process A)\Name1
Для отслеживания значений счетчиков можно применять System Perfomace Monitor - встроеное приложение в Windows
Я не потянул такую скуку, будет заполнятся в процессе изучаения остальных глав =)